package com.cskaoyan.javase.oop1._4compare;

/**
 * 局部变量和成员变量是Java程序开发时，最常见的两种变量类型，所以一定要搞清楚，它们之间的不同。
 *
 * 局部变量和成员变量的比较，我们从以下五个方面去比较：
 * 1.在类中定义的位置不同
 *      成员变量: 成员位置,指的是类体中,局部位置之外的位置
 *      局部变量: 局部位置,指的是类体中,方法,代码块等作用域内部
 *
 * 2.在内存中的位置不同
 *      成员变量: 堆上的对象中
 *      局部变量: 方法的栈帧中
 *
 * 3.生命周期不同
 *      成员变量: 与对象同生共死,对象创建就存在,对象销毁也随之销毁.当然对象的引用一旦被销毁,对象就会失去意义
 *      局部变量: 与方法的调用同生共死,方法调用生效,方法执行完毕失效.
 *
 * 4.有无默认初始化不同
 *      成员变量: 有默认值,而且默认初始化是所有赋值手段第一步.
 *      局部变量: 没有默认值,必须依赖于手动初始化赋值.
 *
 * 5.作用范围
 *      成员变量:
 *          在整个类中的成员方法中,都是可以被访问的.作用范围在整个类中.
 *          但是要注意static修饰的方法不是成员方法,不能直接访问成员变量
 *
 *      局部变量:
 *          仅在作用域内部生效(说白了,就是在大括号内部生效)
 *
 * @since 14:34
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {


    public static void main(String[] args) {

    }
}
class A{
    int num;

    // 成员方法
    public void test(){
        System.out.println(num);
    }

    // 不是成员方法
    public static void testStatic(){
        // System.out.println(num);
    }
}